# 自定义索引转换过滤器
import functools

from flask import session, current_app, g

from info.models import User


def func_index_convert(index):
    index_dict = {1: "first", 2: "second", 3: "third"}
    return index_dict.get(index, "")


def user_login_data(f):
    @functools.wraps(f)  # 给闭包加上这个装饰器以后, 就可以在获取闭包函数信息时, 不显示闭包函数信息, 而是显示原函数信息
    def wrapper(*args, **kwargs):
        # 判断用户是否登录(根据session判断)
        user_id = session.get("user_id")

        user = None  # type: User
        if user_id:
            # 从数据库中取出用户信息
            try:
                user = User.query.get(user_id)
            except BaseException as e:
                current_app.logger.error(e)

        g.user = user  # 用g容器保存用户信息

        return f(*args, **kwargs)

    return wrapper
